package com.example.danmuapplication1111;

import androidx.appcompat.app.AppCompatActivity;

import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.MediaController;
import android.widget.Toast;
import android.widget.VideoView;

import java.util.Random;

import master.flame.danmaku.controller.DrawHandler;
import master.flame.danmaku.danmaku.model.BaseDanmaku;
import master.flame.danmaku.danmaku.model.DanmakuTimer;
import master.flame.danmaku.danmaku.model.IDanmakus;
import master.flame.danmaku.danmaku.model.android.DanmakuContext;
import master.flame.danmaku.danmaku.model.android.Danmakus;
import master.flame.danmaku.danmaku.parser.BaseDanmakuParser;
import master.flame.danmaku.ui.widget.DanmakuView;

public class MainActivity extends AppCompatActivity {
    private static final String TAG = "MainActivity";

    DanmakuView danmakuView;
   EditText editText;
   LinearLayout lin_send;
   DanmakuContext danmakuContext;
   VideoView sp;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();//控件实例化
       // play();//视频播放
        even();//点击事件
    }
    //播放器
    private void play() {
//        int i=9;
//        String ss=i+"";
//        String sl="123";
//        double g=Double.parseDouble(sl);
        String s="android.resource://"+getPackageName()+"/"+R.raw.a3;
        if (s!=null){
           sp.setVideoURI(Uri.parse(s));
           sp.start();
           sp.setMediaController(new MediaController(this));
        }else {
            sp.getBackground().setAlpha(0);
        }
    }

    /**
     * 创建弹幕的解析器
     */
    private BaseDanmakuParser parser = new BaseDanmakuParser() {
        @Override
        protected IDanmakus parse() {
            return new Danmakus();
        }
    };

    //点击事件 点击发送
    private void even() {
        /**
         * 准备工作   3个准备
         */
        //1回调  调setCallback
        danmakuView.setCallback(new DrawHandler.Callback() {
            //准备
            @Override
            public void prepared() {
                danmakuView.start();
                suiji();
            }

            @Override
            public void updateTimer(DanmakuTimer timer) {

            }

            @Override
            public void danmakuShown(BaseDanmaku danmaku) {

            }

            @Override
            public void drawingFinished() {

            }
        });

        //2弹幕的快慢和更新速度
        danmakuView.enableDanmakuDrawingCache(true);
        //3传递给解释器  并传递上下文
        danmakuView.prepare(parser,danmakuContext);

        danmakuView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //判断 文字的可见状态
                if(lin_send.getVisibility()==View.GONE)//不可见时
                {
                    lin_send.setVisibility(View.VISIBLE);//不可见时，设为可见
                }else {
                    lin_send.setVisibility(View.GONE);//可见时设为不可见
                }
            }
        });
    }
//随机弹幕
    private void suiji() {
        //开线程
        new Thread(new Runnable() {
            @Override
            public void run() {
                while (true){
                   int i= new Random().nextInt(300);
                    int time= new Random().nextInt(2000);
                    String s=i+"";
                    sendDanmu(s);
                    //线程睡眠
                    try {
                        Thread.sleep(time);
                    }catch (InterruptedException e){
                        e.printStackTrace();
                    }
                }
            }
        }).start();
    }

    //创建方法  private void initView()
    private void initView() {
        danmakuView=findViewById(R.id.danmu);
        editText=findViewById(R.id.et_danmu);
        lin_send=findViewById(R.id.lin_send);
        danmakuContext=DanmakuContext.create();
        sp=findViewById(R.id.sp);
    }

//吐司
    public void send(View view) {

        //Log.d(TAG, "send: 666666");
        //先接受用户内容
      String sendMen=editText.getText().toString().trim();
      //判断输入框的内容是否为空
      if (sendMen.equals("")){
          Toast.makeText(this,"输入框不能为空",Toast.LENGTH_SHORT).show();
      }else {
          sendDanmu(sendMen);
          editText.setText("");//消除输入框的文字
      }
    }
    /**
       * 弹幕初始化
     */
    private void sendDanmu(String sendMen) {
        for(int i=0;i<2;i++){
            //设置弹幕从左到右还是右到左
            BaseDanmaku danmaku=   danmakuContext.mDanmakuFactory.createDanmaku(BaseDanmaku.TYPE_SCROLL_LR);
            //弹幕对象
            danmaku.text=sendMen;//内容
            danmaku.textSize=40;//字体大小
            danmaku.textColor= Color.RED;//颜色
            danmaku.borderColor=Color.BLACK;//边框颜色
            danmaku.setTime(danmakuView.getCurrentTime());
            danmakuView.addDanmaku(danmaku);
        };
    }

    /**
     * 中断后继续
     */
    @Override
    protected void onResume() {
        super.onResume();
        if (danmakuView!=null&&danmakuView.isPrepared()&&danmakuView.isPaused());
        danmakuView.resume();
    }

    /**
     * 暂停
     */
    @Override
    protected void onPause() {
        super.onPause();
        if (danmakuView!=null&&danmakuView.isPrepared()){
            danmakuView.pause();
        }
    }
    /**
     * 销毁
     */
    @Override
    protected void onDestroy() {
        super.onDestroy();
        //健壮
        if(danmakuView!=null){
            danmakuView.release();
            danmakuView=null;
        }
    }
}
